import { getPage, post, get } from '../../request'

const ns = '/flw/form-def'

export interface FormDef {
  formId: string // 表单ID
  formName: string // 表单名称
  formCode: string // 表单编号
  icon: string // 图标
  structureId: string // 表单结构ID
  processDefKey: string // 流程定义key
  processDefId: string // 流程定义id
  status: number // 状态（正常1/草稿0）
}
export interface FormDefStructure {
  structureId: string // 表单结构ID
  formId: string // 表单ID
  formName: string // 表单名称
  version: number // 版本
  formJson: string //结构
  processDefKey: string // 流程定义key
  processDefId: string // 流程定义id
}

export const formDefApi = {
  /**
   * 查询分页列表
   * @param page
   * @param params
   * @returns
   */
  findPage: (page: AxiosType.Pagination, params?: { [key: string]: any }) => {
    return getPage({ url: ns, params }, page)
  },

  /**
   * 保存
   *
   * @param {*} data 对象
   * @returns
   */
  save(data: FormDef) {
    return post({
      url: ns,
      data
    })
  },

  /**
   * 删除
   *
   * @param {*} data 主键id数组
   * @returns
   */
  delete(data: string[]) {
    return post({
      url: `${ns}/delete`,
      data
    })
  },

  /**
   * 查询表单结构
   */
  findStructureById: (id: string) => {
    return get({ url: `${ns}-structure/${id}` })
  },

  /**
   * 查询表单结构
   */
  findStructureByFormId: (formId: string) => {
    return get({ url: `${ns}-structure/form/${formId}` })
  },

  /**
   * 新建表单结构
   *
   * @param {*} formId 表单ID
   * @param {*} formJson 结构
   * @returns
   */
  createStructure(formId: string, formJson: string) {
    return post({
      url: `${ns}-structure`,
      data: { formId, formJson }
    })
  },

  /**
   * 更新表单结构
   *
   * @param {*} structureId 结构ID
   * @param {*} formJson 结构
   * @returns
   */
  updateStructure(structureId: string, formJson: string) {
    return post({
      url: `${ns}-structure/update`,
      data: { structureId, formJson }
    })
  },

  /**
   * 查询分页列表
   * @param page
   * @param params
   * @returns
   */
  findStructurePage: (page: AxiosType.Pagination, params?: { [key: string]: any }) => {
    return getPage({ url: `${ns}-structure`, params }, page)
  },

  /**
   * 删除
   *
   * @param {*} structureId 表单结构id
   * @returns
   */
  deleteStructure(structureId: string) {
    return post({
      url: `${ns}-structure/delete`,
      data: [structureId]
    })
  },

  /**
   * 激活并加载
   *
   * @param {*} formId 表单ID
   * @param {*} structureId 结构ID
   * @returns
   */
  activeStructure(formId: string, structureId: string) {
    return post({
      url: `${ns}-structure/active/${formId}/${structureId}`
    })
  }
}
